﻿using GDM.Hogar.Managers.Contratos;
using System;
using System.Security.Authentication;
using System.Windows.Forms;

namespace GDM.Hogar.Aplicacion.Formularios.Seguridad
{
    public partial class FrmLogueo
#if DEBUG
 : AdaptadorFrm
#else
            : FrmBase
#endif
    {
        private readonly ILoginManager _loginManager;
        private readonly IUsuarioManager _usuarioManager;

        public FrmLogueo(ILoginManager loginManager, IUsuarioManager usuarioManager)
        {
            if (loginManager == null)
                throw new ArgumentNullException("loginManager");
            if (usuarioManager == null)
                throw new ArgumentNullException("usuarioManager");

            _loginManager = loginManager;
            _usuarioManager = usuarioManager;
            InitializeComponent();
        }

        public bool UsuarioAutenticado { get; set; }

        protected override string Titulo
        {
            get { return "Autenticacion"; }
        }

        private void btnIngresar_Click(object sender, EventArgs e)
        {
            if (!loginValidator.Validate()) return;

            try
            {
                _loginManager.Login(txtUsuario.Text, txtContraseña.Text);
                UsuarioAutenticado = true;
                Close();
            }
            catch (AuthenticationException ex)
            {
                MostrarMensajeError(ex.Message);
                UsuarioAutenticado = false;
            }
        }

        private void Entrar()
        {
            btnIngresar_Click(null, null);
        }

        private void LoginFrm_Load(object sender, EventArgs e)
        {
            var source = _usuarioManager.ObtenerNombresUsuarios();
            var item = new AutoCompleteStringCollection();
            foreach (var nombreUsuario in source)
            {
                item.Add(nombreUsuario);
            }
            txtUsuario.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
            txtUsuario.AutoCompleteSource = AutoCompleteSource.CustomSource;
            txtUsuario.AutoCompleteCustomSource = item;
        }

        private void txtContraseña_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                Entrar();
            }
        }

        private void txtUsuario_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
                Entrar();
            }
        }
    }
}